<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Speler extends MY_Controller {
    var $seizoen;
    var $ploeg;

	function __construct() {
		parent::__construct();
		$this->load->model('spelermodel');
        $this->load->model('seizoenmodel');
        $seizoenen = $this->seizoenmodel->SelectActive();
         if(!isset($seizoenen)){
                    $this->SetMessage("U moet eerst een actief seizoen opgeven");
                    redirect(base_url().'seizoen');
                }
        $seizoenen = $seizoenen[0];
        $this->seizoen = $seizoenen;
        $this->load->model('ploegmodel');
        $ploegen = $this->ploegmodel->SelectHome($this->seizoen->Id);
        if(!isset($ploegen)){
                    $this->SetMessage("U moet eerst een thuisploeg aanmaken opgeven");
                    redirect(base_url().'ploeg');
                }
        if($ploegen != null) {
            $ploegen = $ploegen[0];
            $this->ploeg = $ploegen;
        }
	}
	
	
	public function index() {
		$spelers = $this->spelermodel->SelectBySeizoen($this->seizoen->Id);
        $unregistered = $this->spelermodel->SelectNotInSeizoen($this->seizoen->Id);
        $thuisploeg = $this->ploeg;

        $data['spelers'] = $spelers;
        $data['unregistered'] = $unregistered;
        $data['thuisploeg'] = $thuisploeg;           
        $data['page'] = 'players_list';
        $this->Loadview('players_list',$data);
    }

    public function admin_index() {
        If($this->IsAdmin()){
            $spelers = $this->spelermodel->SelectBySeizoen($this->seizoen->Id);
            $unregistered = $this->spelermodel->SelectNotInSeizoen($this->seizoen->Id);
            $thuisploeg = $this->ploeg;

            $data['spelers'] = $spelers;
            $data['unregistered'] = $unregistered;
            $data['thuisploeg'] = $thuisploeg;
            $data['page'] = 'admin/mod_player_list';

            $this->LoadView('admin/mod_player_list',$data);
        } else { $this->GoBack();}
    }
        
    public function detail($index) {
        $this->load->model('seizoenmodel');
    	$spelers = $this->spelermodel->SelectById($index,$this->seizoen->Id);
        $thuisploeg = $this->ploeg;
        
        if(null !== $this->input->post('update')) {
            $data['update'] = $this->input->post('update');
        }
    	
    	$data['spelers'] = $spelers;
        $data['thuisploeg'] = $thuisploeg;
    	$data['page'] = 'players_detail';
    	$this->LoadView('players_detail', $data);
    }
	public function insert() {
        if($this->IsAdmin()) {
    		$naam = $this->input->post('naam');
    		$voornaam = $this->input->post('voornaam');
    		$email = $this->input->post('email');
            $nummer = $this->input->post('nummer');
            $positie = $this->input->post('positie');
            $lengte = $this->input->post('lengte');
            $gewicht = $this->input->post('gewicht');
            $geboortedatum = $this->input->post('geboortedatum');
            
            $stringdata = array($naam,$voornaam,$positie);
            $datumdata = array($geboortedatum);
            $nummerdata = array($nummer,$gewicht,$lengte);
            $emaildata = array($email);
            
            if(!$this->VerifyDate($datumdata) or !$this->VerifyEmail($emaildata) or !$this->VerifyNumber($nummerdata) or !$this->VerifyString($stringdata)) {
                 $this->SetMessage("Invoer probleem. Actie geannulleerd.");
                 redirect(base_url() . 'speler');
            }
            
            $account = $this->spelermodel->SelectByEmail($email,$this->seizoen->Id);
            if(isset($account[0])){
                $this->SetMessage('Een speler met dit e-mail adres bestaat al');
                $this->GoBack();
            }
            
            $geboortedatum = date("Y-m-d",  strtotime($geboortedatum));
            $password = random_string('numeric',4);
    		
    		$id = $this->spelermodel->Insert($naam,$voornaam,$email,$lengte,$gewicht,$geboortedatum);
            $this->spelermodel->SetPassword($email,$password);
            $this->load->library('mailclass');
            $this->mailclass->MailPassword($password,$email);
            $this->seizoenmodel->RegisterSpeler($id,$this->ploeg->Inschrijving,$nummer,$positie);

            if(isset($_FILES["file"]) and $_FILES["file"]["error"] === 0){
                $allowedExts = array("gif", "jpeg", "jpg", "png");
                $temp = explode(".", $_FILES["file"]["name"]);
                $extension = end($temp);
                move_uploaded_file($_FILES["file"]["tmp_name"], "./images/players/$id.image");
            }
            else {
                copy("./images/default.jpg","./images/players/$id.image");
            }
        }

		redirect($_SERVER['HTTP_REFERER']);  
	}
	
	public function delete() {
        if($this->IsAdmin()) {
    		$id = $this->input->post('id');
    		$this->spelermodel->Delete($id);
            unlink('./images/players/'.$id.'image');
        }

		redirect($_SERVER['HTTP_REFERER']);  
	}
	
	public function update() {
        if($this->IsAdmin()) {
            $id = $this->input->post('id');
    	    $naam = $this->input->post('naam');
        	$voornaam = $this->input->post('voornaam');
        	$nummer = $this->input->post('nummer');
        	$email = $this->input->post('email');
        	$positie = $this->input->post('positie');
            $inschrijving = $this->input->post('inschrijving');
            $lengte = $this->input->post('lengte');
            $gewicht = $this->input->post('gewicht');
            $geboortedatum = $this->input->post('geboortedatum');
            $stringdata = array($naam,$voornaam,$positie);
            $emaildata = array($email);
            $nummerdata = array($id,$lengte,$gewicht,$inschrijving);
            $datumdata = array($geboortedatum);

            if(!$this->VerifyDate($datumdata) or !$this->VerifyEmail($emaildata) or !$this->VerifyString($stringdata) or !$this->VerifyNumber($numberdata)){
                $this->SetMessage('Invoerfout');
                redirect(base_url().'speler');
            }

            $geboortedatum = date("Y-m-d",  strtotime($geboortedatum));
    	    $this->spelermodel->Update($id,$naam,$voornaam,$email,$nummer,$positie,$inschrijving,$lengte,$gewicht,$geboortedatum);
               
            if(isset($_FILES["file"]) and $_FILES["file"]["error"] === 0) {
                unlink('./images/players/'.$id.'image');
                $allowedExts = array("gif", "jpeg", "jpg", "png");
                $temp = explode(".", $_FILES["file"]["name"]);
                $extension = end($temp);
                move_uploaded_file($_FILES["file"]["tmp_name"], "./images/teams/$id.image");
            }
        }

		redirect($_SERVER['HTTP_REFERER']);  
	}
	
    public function register() {
        if($this->IsAdmin()){
            $speler = $this->input->post('id');
            $this->seizoenmodel->RegisterSpeler($speler,$this->ploeg->Inschrijving,null,null);
            $this->SetUpdate($speler);
        }
            
        redirect($_SERVER['HTTP_REFERER']);         
    }
        
    public function unregister() {
        if($this->IsAdmin()){
            $id = $this->input->post('id');
            $this->seizoenmodel->UnregisterSpeler($id,$this->seizoen->Id);
        }

        redirect($_SERVER['HTTP_REFERER']);  
    }
        
    public function resetpassword() {
        $email = $this->input->post('email');

        if($this->VerifyEmail($email)){
            $password = random_string('numeric',4);
            $this->spelermodel->setpassword($email,$password);
            $this->load->library('mailclass');
            $this->mailclass->MailPassword($password,$email);
            $this->SetMessage('wachtwoord opnieuw ingesteld');
        }
        else{
            $this->SetMessage('invoerfout');
        }
        
        redirect('profile');
    }
}